﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//以日期类为例
//class Date
//{
//public:
//	Date(int year, int month, int day)
//		:_year(year),
//		_month(month),
//		_day(day)
//	{}
//private:
//	int _year;
//	int _month;
//	int _day;
//};

//class A
//{
//public:
//	A(int a)
//		:_a(a)
//	{}
//private:
//	int _a;
//};
//
//class B
//{
//public:
//	B(int a, int ref)
//		:_aobj(a)
//		,_ref(ref)
//		, _n(10)
//	{}
//private:
//	A _aobj;// 没有默认构造函数
//	int& _ref; // 引用
//	const int _n; // const 
//};


//class A
//{
//public:
//	A(int a1)
//		:_a1(a1)
//		, _a2(_a1)
//	{}
//	void Print()
//	{
//		cout << _a1 << ' ' << _a2 << endl;
//	}
//private:
//	int _a2;
//	int _a1;
//};
//
//int main()
//{
//	A a(1);
//	a.Print();
//	return 0;
//}


//class Date
//{
//public:
//	/*explicit*/ Date(int year, int month = 1, int day = 1)
//		:_year(year)
//		, _month(month)
//		, _day(day)
//	{
//	}
//	void Print()
//	{
//		cout << _year << ' ' << _month << ' ' << _day << endl;
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//
//int main()
//{
//	Date a(1900);
//	Date b = 2023;//1
//	b.Print();
//	a.Print();
//	a = 2024;//2
//	a.Print();
//	return 0;
//}
//class A
//{
//public:
//    A() 
//	{ 
//		++_scount; 
//	}
//
//	A(const A & t) 
//	{ 
//		++_scount; 
//	}
//
//	~A() 
//	{
//		--_scount; 
//	}
//
//	static int GetACount() 
//	{ 
//		return _scount; 
//	}
//private:
//    static int _scount;
//};
//
//
//int A::_scount = 0;//在类外初始化
//
//
//void TestA()
//{
//	cout << A::GetACount() << endl;
//	A a1, a2;
//	cout << A::GetACount() << endl;
//
//	A a3(a1);
//	cout << A::GetACount() << endl;
//}
//
//int main()
//{
//	TestA();
//	cout << A::GetACount() << endl;
//
//	return 0;
//}


//class Time
//{
//	friend class Date;//声明Date类是Time类的友元类，则可以直接在Date类里访问Time类的非公有成员
//public:
//	Time(int hour = 0, int minute = 0, int second = 0)
//		:_hour(hour)
//		,_minute(minute)
//		,_second(second)
//	{
//
//	}
//private:
//	int _hour;
//	int _minute;
//	int _second;
//};

//class Date
//{
//public:
//	Date(int year = 1900, int month = 1, int day = 1)
//		:_year(year)
//		, _month(month)
//		, _day(day)
//	{
//
//	}
//	void SetTimeofDate(int hour, int minute, int second)
//	{
//		//Date类的成员函数，却可以直接访问Time类里的私有变量
//		_t._hour = hour;
//		_t._minute = minute;
//		_t._second = second;
//
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//	Time _t;
//};

//class Time
//{
//	class Date//天生是Time的友元类
//	{
//	public:
//		Date(int year = 1900, int month = 1, int day = 1)
//			:_year(year)
//			, _month(month)
//			, _day(day)
//		{
//
//		}
//		void Couttime(const Time&a)
//		{
//			//Date类的成员函数，却可以直接访问Time类里的私有变量
//			cout << a._hour << ' ' << a._minute << ' ' << a._second;
//			cout << k;
//
//		}
//	private:
//		int _year;
//		int _month;
//		int _day;
//	};
//public:
//	Time(int hour = 0, int minute = 0, int second = 0)
//		:_hour(hour)
//		, _minute(minute)
//		, _second(second)
//	{
//
//	}
//private:
//	int _hour;
//	int _minute;
//	int _second;
//	static int k;
//};

//class A
//{
//public:
//	A(int a = 0)
//		:_a(a)
//	{
//		cout << "A(int a)" << endl;
//	}
//	~A()
//	{
//		cout << "~A()" << endl;
//	}
//private:
//	int _a;
//};
//
//int main()
//{
//	A();
//	cout << 111 << endl;
//	return 0;
//}